Software Engineering 28

[Eclipse] Solution to 「The default superclass, "jakarta.servlet.http.HttpServlet", according to the project's Dynamic Web Module facet version (5.0), was not found on the Java Build Path.」

이클립스 2023-06 버전에서 Dynamic Web Project를 생성하고 런타임으로 Tomcat 10.1을 사용하는 프로젝트에서 JSP 태그를 작성하면 제목과 같은 오류가 생기는데, 해결 방법을 적어둡니다. 다른 버전도 그런지는 모르겠습니다. 아마 톰캣 버전에 따라서 JSP 관련 클래스의 네임스페이스가 javax에서 jakarta로 바뀌어서 그런 걸로 보입니다. 프로젝트 속성(Properties)에서 Project Facets 화면에서 Dynamic Web Module 항목의 버전을 6.0으로 변경하고 Apply and Close 버튼을 누르면 해결됩니다. 재밌는건 이렇게 해서 오류 마커가 사라지면 모듈 버전을 5.0으로 되돌려도 오류가 다시 생기지 않습니다. 알다가도 모르겠네요

[JSP프로그래밍] 제4장 JSP 동작 원리

1. 단원 요약 JSP 기술은 서블릿 기술에 기반하며, JSP page는 요청 시 서블릿으로 변환→컴파일→실행된다. JSP page를 수정하면 그에 해당하는 서블릿 또한 수정된다. 지시어의 속성 autoFlush: 기본 true, 버퍼가 차면 내용물을 전송하고 다음 작업 수행(false인 경우 버퍼가 차면 exception 발생) buffer: 기본 8kb, 실행 중에 버퍼의 내용물을 수정할 수 있음, 특히 헤더를 수정할 수 있음 동일 기능을 하는 서블릿과 JSP page의 비교 ##### Servlet application ##### import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class Example ext..

[JSP프로그래밍] 제3장 JSP 개요

1. 단원 요약 액션(action): 요청을 처리할 때 특정 기능을 수행하는 것 JSP page: 지시어/스크립트/액션태그 등의 JSP 요소를 포함하는 HTML 파일 템플릿 데이터: 고정된 데이터(XML/HTML 요소) JSP 요소: 내부에 작성하는 동적인 요소 JSP: Java EE의 하위 기술 중 하나(JSR245)로, 서블릿 기술에 기반하여 동적인 웹 페이지를 생성하는 기술 지시어: JSP page에 대한 설정 정보를 정의하는 요소 스크립트 요소: JSP page 내에서 로 표현되는 요소 Scriptlet: 내부에 자바 코드를 작성한다. 표현식: 변수나 수식의 값을 템플릿 데이터 중간에 표현 선언: Scriptlet이나 표현식에 사용할 메서드나 멤버 변수(필드)를 선언 주석: 액션태그: JSP pa..

Java EE(Jakarta EE) vs. Spring 프레임워크

Spring은 Java EE를 대체하기 위해 나온 기술입니다. Java EE에는 JSP, JSTL, Servlet, EJB, JavaMail, JTA, JMS, JPA 등의 하위 기술들이 포함되어 있는데, 각각이 Spring Framework와 어떻게 대응되는지 궁금해져서 오랜만에 글을 쓰게 되었습니다. 추가로 Java EE와 Spring의 특징과 차이점도 함께 정리하겠습니다. Slideshare에서 좋은 자료를 발견해서 원본 주소를 남기고 가져와 보았습니다. 2011년 자료이지만 기술의 발달 과정을 이해하는 데는 옛날 자료도 도움이 많이 된다고 생각합니다. 1. 특징 비교 의존성 주입 JSR(Java Specification Requests) CDI(Contexts and Dependency Injec..

[Java] 비트 연산자(Bitwise Operators) 정리

1. 논리곱(AND) & 입력 비트가 모두 1인 경우 출력이 1인 연산 byte a = 10; // 1010 byte b = a & 2; // 00001010 // 00000010 // 00000010 System.out.println(b); // 2 2. 논리합(OR) | 입력 비트 중 한 개 이상이 1인 경우 출력이 1인 연산 byte a = 10; // 1010 byte b = a | 2; // 00001010 // 00000010 // 00001010 System.out.println(b); // 10 3. 배타적 논리합(eXclusive OR) ^ 두 입력이 서로 다른 경우 출력이 1인 연산 byte a = 10; // 1010 byte b = a ^ 2; // 00001010 // 000000..

[소프트웨어공학] 제11장 액티비티 다이어그램

1. 단원 요약 액티비티, 액션, 제어흐름 액티비티: 일련의 액션들과 그 제어흐름으로 구성된 작업 단위, 모서리가 둥근 사각형 액션: 액티비티 수행에 필요한 더 이상 분해 불가한 단일 작업, 모서리가 둥근 사각형 제어흐름: 각 액션에 대한 입력흐름과 출력흐름, 화살표 제어노드 시작/종료: 액티비티의 시작과 종료를 표현 액티비티 시작 노드: ⬤ 액티비티 종료 노드: ⦿ 흐름 종료: 액티비티가 아닌 특정 흐름의 종료를 표현 흐름 종료 노드: ⊗ 조건 노드: 조건문과 같은 의미이며, 마름모로 표시 병합 노드: 조건에 따른 흐름들이 합쳐지는 부분이며, 마름모로 표시 포크/조인 노드: 병렬 처리를 표현하며, 굵은 막대로 표시 객체, 객체흐름 객체란 액션의 입/출력 데이터로, 간혹 물리적인 객체이기도 함 객체 노드..

[소프트웨어공학] 제10장 유스케이스 다이어그램 및 명세

1. 단원 요약 개요 UML (Unified Markup Language) 1.0: OMG, 1997 UML 2.5: OMG, 2015 4+1 View Usecase View: 유스케이스 다이어그램 Logical View: 상호작용 다이어그램(시퀀스 다이어그램, 통신 다이어그램) Process View: 액티비티 다이어그램 Development View Physical View UML 2.5 다이어그램 유스케이스 다이어그램: 구조적, 행위적 측면을 모두 표현한다. 구조 다이어그램 클래스 다이어그램 객체 다이어그램 패키지 다이어그램 컴포넌트 다이어그램 배포 다이어그램 행위 다이어그램 액티비티 다이어그램 상태머신 다이어그램 상호작용 다이어그램 시퀀스 다이어그램 통신 다이어그램 액터: 막대인간, 아이콘, 스테..

[소프트웨어공학] 제9장 객체지향 분석과 설계

1. 단원 요약 개요 "객체지향 분석과 설계"는 제6장 사용자 요구 분석(요구공학) 단원의 "요구사항 모델링"에 관한 설명 중 "객체지향 분석 모델"을 기초로 수행된다. 객체지향 분석: 문제 도메인을 분석하여 개념 모델을 작성하는 과정 객체지향 분석의 결과물은 시스템이 수행하는 기능을 설명하는 모델이다. 유스케이스, 클래스, 상호작용 다이어그램 객체지향 설계: 객체지향 분석 단계의 결과물을 비기능적 요구사항과 아키텍처를 고려하여 변환하는 과정 = 개념 클래스들을 구현 클래스들로 변환하는 과정 요구사항 추출 요구 공학: 요구사항 추출을 위한 활동 액터 찾기 시스템과 상호작용하는 사람, 외부 시스템을 찾는다. 유스케이스를 시작시키거나 그로부터 정보를 제공받는 액터를 "참여 액터"라고 부른다. 시나리오 찾기 ..

[소프트웨어공학] 제8장 코딩과 소프트웨어 유지보수

1. 단원 요약 코딩 코딩 스타일: 가독성과 유지보수성을 높이기 위한 소스코드 작성 지침이나 관행 내부 문서화: 소스코드 내에서 주석을 통해 코드에 대한 설명을 작성하는 행위 코드 스멜: 잠재적으로 문제가 발생할 소지가 있는 소스코드의 일부분 리팩토링: 기능 수정 없이, 구조를 개선하여 가독성과 유지보수성을 높이는 행위 소프트웨어 유지보수 제품 변경 전략 아키텍처 수정 없이 변경 아키텍처 수정 유지보수성 향상을 위한 재공학 유지보수 유형 수정 유지보수: 오류 수정 적응 유지보수: 외부 환경 변화에 대응하기 위한 수정 완전 유지보수: 기능, 성능 개선을 위한 수정 *가장 자주 일어난다. 예방 유지보수: 이해성, 유지보수성 개선을 위한 수정 소프트웨어 유지보수: 형상관리 형상: 시스템을 구성하는 요소들과 그..

[소프트웨어공학] 제7장 소프트웨어 설계

1. 단원 요약 설계 프로세스 입력: 요구사항 명세서, 요구사항 분석모델, 환경적 제약 조건 출력: SW 아키텍처, 인터페이스, 알고리즘, 데이터 형식 정의 설계 프로세스는 반복적이다. 설계 행위 아키텍처 설계: 시스템의 논리적 구성도로써, 비기능적 요구사항에 큰 영향 데이터베이스 설계 서브시스템 설계 컴포넌트 설계 자료구조/알고리즘 설계 설계 원리 문제분할(분할정복) 수평 분할: 기능별로 모듈 그룹화(전체 제어가 복잡해지나 파급 효과가 작고 테스트, 유지보수, 확장이 용이하다.) 수직 분할: 상위 모델은 제어, 하위 모델은 실제 작업을 수행(제어는 단순하나 파급 효과가 크다.) 추상화 기능 추상화: 데이터 추상화: 하향식 설계/상향식 설계 하향식 설계: 상향식 설계: 아키텍처 설계 아키텍처 스타일: 유..